{% macro render_problem_title(pdoc, tdoc=none, show_tags=true, show_invisible_flag=true, invalid=false, inline=false, small=false, alphabetic=false) %}
{%- if not invalid -%}
  {% set _linkArgs = { pid:pdoc.pid|default(pdoc.docId) } %}
  {% if tdoc %}{{ set(_linkArgs, 'query', {tid:tdoc.docId}) }}{% endif %}
  {% if pdoc.domainId !== handler.args.domainId %}{{ set(_linkArgs, 'domainId', pdoc.domainId) }}{% endif %}
  <a href="{{ url('problem_detail', _linkArgs) }}"{% if small %} data-tooltip="{{ pdoc.title }}"{% endif %}>
{%- endif -%}
{%- if pdoc.domainId !== handler.args.domainId -%}<b>{{ pdoc.domainId }}#</b>{%- endif -%}
{%- if tdoc and alphabetic -%}
  <b>{{ String.fromCharCode(65 + tdoc.pids.indexOf(pdoc.docId)) if tdoc.pids.includes(pdoc.docId) else '#' }}</b>
{%- else -%}
  <b>{{ pdoc.pid or ('P'+pdoc.docId if pdoc.domainId === handler.args.domainId else pdoc.docId) }}</b>
{%- endif -%}
{%- if not small -%}&nbsp;&nbsp;{{ pdoc.title }}{%- endif -%}
{%- if not invalid -%}
  </a>
{%- endif -%}
{%- if pdoc.hidden and show_invisible_flag -%}
  <span class="text-orange">({{ _('Hidden') }})</span>
{%- endif -%}
{%- if show_tags -%}{{ render_problem_tags(pdoc, inline=inline) }}{%- endif -%}
{% endmacro %}

{% macro render_problem_tags(pdoc, show_none_label=false, inline=false) %}
{%- if pdoc.tag|length > 0 %}
  {%- if not inline %}<ul class="problem__tags">{% endif -%}
  {%- for tag in pdoc['tag'] %}
    {% set _w = '"' if tag and tag.includes(' ') else '' %}
    <li class="problem__tag"><a class="problem__tag-link" href="{{ url('problem_main', query={q:'category:'+_w+tag+_w}) }}">{{ tag }}</a></li>
  {%- endfor -%}
  {%- if not inline %}</ul>{% endif -%}
{%- else -%}
  {%- if show_none_label -%}{{ _('(None)') }}{%- endif -%}
{%- endif -%}
{% endmacro %}
